/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.ModeloConvocatoria;
import com.ipartek.formacion.gestformwww.modelo.beans.Convocatoria;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Método que visualiza el historial de convocatorias de un candidato
 * @author Fran, Cris
 */
public class VisualizarHistorialConvCandAccion implements Accion{
    /*Rutas para cargar la lista candidatos o visualizar */
    private final String visualizarcandidato = "visualizar-candidato-accion";
    private final String listarcandidatos = "listar-candidatos-accion";

/**
 * Metodo para la elección de pestañas de VisualizarCandidatos controla con el parametro o atributo canId
 * semejante a VisualizarEmailAccion y VisualizarContactosAccion
 * @param servlet
 * @param request
 * @param response
 * @return
 */
    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        HttpSession sesion;
        sesion = request.getSession();
        AccionRouter router=new AccionRouter("principal");
        AccionServlet as=(AccionServlet) servlet;
        Integer idCandidato = -1;
        
        ModeloConvocatoria modelo = (ModeloConvocatoria) servlet.getServletContext().getAttribute("ModeloConvocatoria");
        ArrayList<Convocatoria> conv = new ArrayList<Convocatoria>();

        if (sesion.getAttribute("usuario") == null) {
            router = new AccionRouter("inicio", false);
        } else {
            //Verifica que el candidato id es correcto
            if ((Verificador.numeroValido(request.getParameter("canId")) || (request.getAttribute("canId") != null)))
            {
                if (request.getAttribute("canId") != null) {
                    idCandidato = (Integer) request.getAttribute("canId");
                } else {
                    idCandidato = Integer.parseInt(request.getParameter("canId"));
                }

                try {
                    /* Carga el contenido de la lista de convocatorias en el array */
                    conv = modelo.listarConvocatoriasCandidato(idCandidato);
                } catch (GestorFormacionExcepcion ex) {
                    Logger.getLogger(VisualizarHistorialSMSAccion.class.getName()).log(Level.SEVERE, null, ex);
                }
                 /*Carga el contenido de la lista de convocatorias y lo muestra en la pestana del historial de convocatorias*/
                if (conv!=null){
                    request.setAttribute("listaconvocatorias", conv);
                    request.setAttribute("contenido-candidato", "convocatorias-candidato");
                }

            }else {
                try {
                    router=as.getFactory().getAction(as.getNombreClaseRecurso(listarcandidatos),servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(VisualizarHistorialSMSAccion.class.getName()).log(Level.SEVERE, null, ex);
                } catch (InstantiationException ex) {
                    Logger.getLogger(VisualizarHistorialSMSAccion.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IllegalAccessException ex) {
                    Logger.getLogger(VisualizarHistorialSMSAccion.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
        return router;
    }
    
}
